package com.zmn.oms.dubbo.interfaces.zmn.third.zhimi;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.common.vo.KVDict;
import com.zmn.oms.dubbo.dto.zmn.third.zhimi.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @author sunlife
 * @date:2020/4/27 3:58 下午
 * description:
 */
@Api(value = "智米H5接口", tags = {"智米H5接口"})
public interface ZhimiRemoteService {
    /**
     * 根据SN码获取相关信息
     */
    @ApiOperation(value = "查询SN码相关信息")
    ResponseDTO<CheckResultDRO> checkSNCode(Long workId, String snCode, String thirdModelCode);

    /**
     * 根据新设备SN码获取相关信息
     */
    @ApiOperation(value = "查询新SN码相关信息")
    ResponseDTO<CheckResultDRO> checkNewSNCode(Long workId, String newSnCode);

    /**
     * 保存购机日期
     */
    @ApiOperation(value = "保存购机日期")
    ResponseDTO<SaveBuyDateResulstDRO> saveBuyDate(ZhimiPartReturnFactoryDIO dio) throws OmsBaseException;

    /**
     * 保存返厂物流信息
     *
     * @return
     */
    @ApiOperation(value = "保存返厂物流信息")
    ResponseDTO saveReturnFactoryExpress(ZhimiPartReturnFactoryDIO dio) throws OmsBaseException;

    /**
     * 查询故障列表
     */
    @ApiOperation(value = "查询故障列表")
    ResponseDTO<List<KVDict<String>>> getFaultList(Long workId);

    /**
     * 保存故障列表
     */
    @ApiOperation(value = "保存故障列表")
    ResponseDTO saveFault(ZhimiDIO dio);

    /**
     * 查询配件
     */
    @ApiOperation(value = "查询配件列表")
    ResponseDTO<ZhimiPartInfoVO> getPartList(Long workId);

    /**
     * 申请配件
     */
    @ApiOperation(value = "申请配件")
    ResponseDTO applyPart(ZhimiDIO applyDIO);

    /**
     * 查询工单配件信息
     */
    @ApiOperation(value = "查询工单配件列表信息")
    ResponseDTO<List<ZhimiPartVO>> getWorkPartList(ZhimiBaseDIO dio);

    /**
     * 保存检测结果
     */
    @ApiOperation(value = "保存检测结果")
    ResponseDTO checkResult(ZhimiResultDIO resultDIO) throws OmsBaseException;

    /**
     * 保存勘测结果
     */
    @ApiOperation(value = "保存勘测结果")
    ResponseDTO surveyResult(ZhimiResultDIO resultDIO) throws OmsBaseException;

    /**
     * 保存退货类型
     */
    @ApiOperation(value = "保存退货类型")
    ResponseDTO retundResult(ZhimiResultDIO resultDIO) throws OmsBaseException;

    /**
     * 保存换机类型
     */
    @ApiOperation(value = "保存换机类型")
    ResponseDTO exchangeResult(ZhimiResultDIO resultDIO) throws OmsBaseException;

    /**
     * 获取智米工单信息
     */
    @ApiOperation(value = "获取智米工单信息")
    ResponseDTO<ZhimiVO> getOrderInfo(Long workId);
}
